package com.tdam2011.grupo04.SMSWeb;

import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;

import com.tdam2011.grupo04.R;
import com.tdam2011.grupo04.Sql;
import com.tdam2011.grupo04.entidades.EmailContacto;
import com.tdam2011.grupo04.entidades.Mensaje;

import android.app.AlertDialog;
import android.app.Dialog;
import android.app.ListActivity;
import android.content.DialogInterface;
import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.TextView;

public class HistorialMensajesWeb extends ListActivity{
	
	private ImageButton img_nuevo_smsWeb;
	private TextView txt_nuevo_smsWeb;
	
	private MensajeWebAdapter adapter;
	
	private final int MENSAJE_RECIBIDO= 0;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
	        super.onCreate(savedInstanceState);
	        setContentView(R.layout.historiales);
	        
	        Bundle extras = getIntent().getExtras();
	        if(extras != null){
	        	String usuarioMensaje= extras.getString("usuarioMensaje");
	        	String cuerpoMensaje= extras.getString("cuerpoMensaje");
	        	
	        	com.tdam2011.grupo04.entidades.Mensaje mensaje= new Mensaje();
	        	mensaje.setNombreContacto(usuarioMensaje);
	        	mensaje.setCuerpoMensaje(cuerpoMensaje);
	        	
	        	Sql sql= new Sql(this);
	        	sql.addMensajeWeb(mensaje, MENSAJE_RECIBIDO);
	        	
	        	ConsultaMensajeService.mNotificationManager.cancel(1);
	        }
	        
	        img_nuevo_smsWeb= (ImageButton)findViewById(R.id.img_nuevo_mensaje);
	        txt_nuevo_smsWeb= (TextView)findViewById(R.id.txt_nuevo_mensaje);
		    
		    img_nuevo_smsWeb.setBackgroundResource(R.drawable.nuevo_mensajeweb);
		    txt_nuevo_smsWeb.setText("Nuevo Mensaje Web");
	        
	        adapter= new MensajeWebAdapter();
	        setListAdapter(adapter);
	        
	        cargarMensajesWeb();
	}
	
	protected void onResume(){
		super.onResume();
		cargarMensajesWeb();
	}
	
	public void nuevoMensaje(View v){
		Intent intent= new Intent(HistorialMensajesWeb.this, MensajeWeb.class);
		startActivityForResult(intent, 2);
	}
	
	private void cargarMensajesWeb(){
		Sql sql = new Sql(this);		
		Cursor cur = sql.getAllMensajesWeb();
		
		adapter.clearList();
		
		if (cur.getCount() > 0) {
			while (cur.moveToNext()){
				String usuario = cur.getString(cur.getColumnIndex("usuario"));
				String cuerpoMensaje = cur.getString(cur.getColumnIndex("mensaje"));
				long fecha= cur.getLong(cur.getColumnIndex("fecha"));
				
				com.tdam2011.grupo04.entidades.Mensaje mensajeWeb = new Mensaje();
				mensajeWeb.setNombreContacto(usuario);
				mensajeWeb.setCuerpoMensaje(cuerpoMensaje);
				mensajeWeb.setFechaEnvio(fecha);
				
				adapter.addMensaje(mensajeWeb);
			}
		}
		cur.close();
		sql.close();
		adapter.notifyDataSetChanged();
	}
	
	@Override
    public boolean onCreateOptionsMenu(Menu menu)
    {
		MenuInflater inflater = getMenuInflater();
	    inflater.inflate(R.menu.histmensajesweb_menu, menu);
	    return true;
    }
	
	public boolean onOptionsItemSelected(MenuItem item){
    	super.onOptionsItemSelected(item);
    	return false;
    }
	
	class MensajeWebAdapter extends BaseAdapter{
		private ArrayList<Mensaje> mensajes;
		private LayoutInflater inflater;

		public MensajeWebAdapter() {
			mensajes = new ArrayList<Mensaje>();
			inflater = LayoutInflater.from(HistorialMensajesWeb.this);
		}

		public void addMensaje(com.tdam2011.grupo04.entidades.Mensaje mensaje) {
			if (mensaje != null) 
				this.mensajes.add(mensaje);
		}
		
		public int getCount() {
			return mensajes.size();
		}
		
		public Object getItem(int position) {
			return mensajes.get(position);
		}

		public long getItemId(int position) {
			return position;
		}
		
		public void clearList(){
			mensajes.clear();
		}

		class Holder {
			private ImageView img_contacto;
			private TextView txt_nombreContacto;
			private TextView txt_fechaEnvio;
			private TextView txt_cuerpoMensaje;
		}

		public View getView(final int position, View convertView, ViewGroup arg2){
			Holder holder;
			if (convertView == null) {
				convertView = inflater.inflate(R.layout.historiales_fila , null);
				holder = new Holder();
				holder.txt_nombreContacto = (TextView) convertView
						.findViewById(R.id.txt_nombreContacto);
				holder.txt_fechaEnvio = (TextView) convertView
						.findViewById(R.id.txt_fechaMensaje);
				holder.img_contacto = (ImageView) convertView
						.findViewById(R.id.img_contacto);
				holder.txt_cuerpoMensaje = (TextView) convertView
						.findViewById(R.id.txt_cuerpoMensaje);
				convertView.setTag(holder);
			} else {
				holder = (Holder) convertView.getTag();
			}
			
			com.tdam2011.grupo04.entidades.Mensaje mensaje = (com.tdam2011.grupo04.entidades.Mensaje) getItem(position);
			
			String fecha = millisToDate(mensaje.getFechaEnvio());
			
			holder.img_contacto.setVisibility(ImageView.GONE);
			
			holder.txt_nombreContacto.setText(mensaje.getNombreContacto());
			holder.txt_cuerpoMensaje.setText(mensaje.getCuerpoMensaje());
			holder.txt_fechaEnvio.setText(fecha);

			return convertView;
		}
	}
	
	@Override
	protected Dialog onCreateDialog(int id) {
		AlertDialog.Builder builder = new AlertDialog.Builder(this);
		builder.setTitle("Mensaje Web");
		builder.setMessage("Error al consultar los mensaje");
		builder.setPositiveButton("Aceptar", new DialogInterface.OnClickListener() {		
			@Override
			public void onClick(DialogInterface dialog, int which) {
				dialog.cancel();
			}
		});
			
		AlertDialog alert = builder.create();
		return alert;
		
	}
	
	public static String millisToDate(long currentTime) {
	    String finalDate;
	    Calendar calendar = Calendar.getInstance();
	    calendar.setTimeInMillis(currentTime);
	    Date date = calendar.getTime();
	    finalDate = date.toString();
	    return finalDate;
	}
}
